/*!
 * \file frconfig.h
 *
 * \brief 配置文件操作
 *
 * All Rights Reserved Copyright (C) 2014 broada,Co.,Ltd.\n
 * 相关接口，实现xml配置文件的读取与更改
 *
 * \version 2.0
 * \author geyh
 * \date 2014/11/04
 *
 */


#ifndef __FRCONFIG_H_
#define __FRCONFIG_H_

#define APM_FRCONFIG_SUCC       0
#define APM_FRCONFIG_NO_FIND    1
#define APM_FRCONFIG_MEM_ERR    2

/*!
 * 打开配置文件
 *
 * \param p_filename  (文件名)
 *
 * \return fp          文件指针
 *
 */
FILE *frconfig_open(const char *p_filename);

/*!
 * 关闭配置文件
 *
 * \param fp      配置文件指针
 *
 */
void frconfig_close(FILE *fp);

/*!
 * 从配置文件中获取key的值
 *
 * \param p_key                          要找的key
 * \param fp                             配置文件指针
 * \param pp_value                       传出key的值
 *
 * \return APM_FRCONFIG_SUCC:成功找到key值(normal)\n
 *         APM_FRCONFIG_NO_FIND:没找到(normal)\n
 *         APM_FRCONFIG_MEM_ERR:内存错误(error)
 *
 * \note pp_value 需要释放
 *
 */
int frconfig_string(FILE* fp, char *p_key, char **pp_value);

/*!
 * 从配置文件中获取key的值
 *
 * \param p_key                             要找的key
 * \param fp                                配置文件指针
 * \param p_i_value                         传出key的值(int)
 *
 * \return APM_FRCONFIG_SUCC:成功找到key值(normal)\n
 *         APM_FRCONFIG_NO_FIND:没找到(normal)\n
 *         APM_FRCONFIG_MEM_ERR:内存错误(error)
 *
 */
int frconfig_int(FILE* fp, char *p_key, int *p_i_value);


/*!
 * 打开文件并获取key
 *
 * \param p_key                            要找的key
 * \param p_config_name                    配置文件
 * \param pp_value                         传出key的值
 *
 * \return APM_FRCONFIG_SUCC:成功找到key值(normal)\n
 *         APM_FRCONFIG_NO_FIND:没找到(normal)\n
 *         APM_FRCONFIG_MEM_ERR:内存错误(error)
 *
 * \note pp_value  外部释放
 *
 */
int frconfig_get_string(char *p_config_name, char *p_key, char **pp_value);

/*!
 * 打开文件并获取key
 *
 * \param p_key                        要找的key
 * \param p_config_name                配置文件
 * \param p_i_value                   传出key的值(int)
 *
 * \return APM_FRCONFIG_SUCC:成功找到key值(normal)\n
 *         APM_FRCONFIG_NO_FIND:没找到(normal)\n
 *         APM_FRCONFIG_MEM_ERR:内存错误(error)
 *
 */
int frconfig_get_int(char *p_config_name, char *p_key, int *p_i_value);


/*!
 * 在配置文件最后追加内容（string）;
 * 如果配置文件中已经存在key则修改其value值
 *
 * \param p_key                        要追加的key
 * \param p_config_name                要追加内容的配置文件
 * \param p_value                      要追加的key的value值
 *
 * \return FR_SUCC:成功\n
 *         FR_FAIL:失败
 *
 */
int frconfig_set_string(char *p_config_name, char *p_key, char *p_value);


/*!
 * 在配置文件最后追加内容（int）\n
 * 如果配置文件中已经存在key则修改其value值
 *
 * \param p_key                        要追加的key
 * \param p_config_name                要追加内容的配置文件
 * \param i_value                      要追加的key的value值
 *
 * \return FR_SUCC:成功\n
 *         FR_FAIL:失败
 *
 */
int frconfig_set_int(char *p_config_name, char *p_key, int i_value);


/*!
 * 删除配置文件中的key
 *
 * \param p_key                        要追加的key
 * \param p_config_name                要追加内容的配置文件
 * \param p_value                      要删除的key的value值
 *
 * \return FR_SUCC:成功\n
 *         FR_FAIL:失败
 *
 */
int frconfig_del_string(char *p_config_name, char *p_key, char *p_value);

#endif
